package com.xmall.product.define.request.attr;

import com.xmall.define.base.BaseUpdateRequest;
import com.xmall.validate.group.AddGroup;
import com.xmall.validate.group.UpdateGroup;
import lombok.Data;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 请求数据格式：新增/编辑 product - attr
 */
@Data
public class BaseAttrUpdateRequest extends BaseUpdateRequest implements Serializable {

    /**
     * 分组ID
     */
    @NotNull(message = "分组ID不能为空", groups = { AddGroup.class })
    private Long groupId;

    /**
     * 名称
     */
    @NotBlank(message = "名称不能为空", groups = { AddGroup.class, UpdateGroup.class })
    @Size(min = 2, max = 20, message = "名称长度必须在 2 到 20 之间", groups = { AddGroup.class, UpdateGroup.class })
    private String name;

    /**
     * 单位
     */
    private String unit;

    /**
     * 排序
     */
    @Null(message = "排序必须为空", groups = { AddGroup.class, UpdateGroup.class })
    private Integer sort;

    /**
     * 是否可检索（0否 1是）
     */
    @NotNull(message = "检索类型不能为空", groups = { AddGroup.class, UpdateGroup.class })
    private Integer isSearch;

    /**
     * 是否多值（0否 1是）
     */
    @NotNull(message = "是否多值不能为空", groups = { AddGroup.class, UpdateGroup.class })
    private Integer isMulti;

    /**
     * 数据类型（0字符串 1数字 2布尔）
     */
    @NotNull(message = "数据类型不能为空", groups = { AddGroup.class, UpdateGroup.class })
    private Integer dataType;

    /**
     * 可选项列表
     */
    private List<String> optionList = new ArrayList<>();
}
